(function(angular){
    var myServ = angular.module('service',[]);
    myServ.service('$myServ',['$window',function($window){
        //功能1：得到数据库中数据，进行页面中的渲染
        var str = $window.localStorage.getItem('mytodos') || '[]';
        //建立当前页面数据 ，在改变时进行数据库交互
        var todos = JSON.parse(str);
        
        //建立得到数据得到方法
        this.get = function(){
            return todos;
        };
        /***************功能1完成*****************/

        //功能2：添加新的todo
        //建立添加方法把从controller层得到的数据添加到闭包数据 ，因为已经和view层双向绑定，自行动态渲染
        //把更新后的闭包数据和数据库进行更新  （封装更新方法）
        this.save = function(){
            $window.localStorage.setItem('mytodos',JSON.stringify(todos));
            return true;
        };
        this.add = function(newTodo){
            todos.push({
                id:Math.random(),
                name:newTodo,
                completed:false
            });
            this.save();
        };
        /********************功能2完成******************/

        //功能3：数据进行删除
        //module层得到对应要删除的id   对闭包数据进行遍历，把对应的项从闭包数据删除 双向绑定渲染到view层中,再把闭包数据与数据库进行保存
        this.remove = function(id){
            for(var i = 0; i<todos.length; i++){
                if(todos[i].id === id){
                    todos.splice(i,1);
                    this.save();
                    return true;   
                }
            }
        };

        //判定获取焦点
        this.autoFocus = function(isEditingId,id){
            return  isEditingId === id;
        }
        /**************功能3完成*****************/

        //功能6：批量设置状态
        this.all = function(selectAll){
            for(var i = 0; i<todos.length ; i++){
                todos[i].completed = selectAll;
            }
            this.save();
        };
        /******************功能6完成****************/

        //功能7：记录当前active数量
        this.getActive = function(){
            var count = 0;
            for(var i = 0; i<todos.length; i++){
                if(!todos[i].completed){
                    count++;
                }
            }
            return count;
        };
        /*****************功能7完成**************/
        
        //功能8：clear事件
        this.clear = function(){
            for(var i = 0; i<todos.length; i++){
                if(todos[i].completed){
                    todos.splice(i,1);
                    i--;
                }
            }
            this.save();
        };


    }]);

})(angular);